Robot trajectory planning is traditionally performed using one of two techniques: shortest time and shortest path. Shortest time is the fastest trajectory that will move a robot (or a portion thereof) between two positions. However, existing robots typically optimize for time by taking the most direct path between poses in joint space. Because the transform between joint space and Cartesian space for the average industrial robot is very complex, the path the robot takes when attempting to achieve the shortest time will not likely be straight in Cartesian space. A robot technician has little control over the intermediate path when the robot is operating in shortest time mode. Thus, if the robot strikes an obstacle along the way, the technician may need to switch to using a shortest path technique to define intermediate waypoints to avoid the obstacle. The shortest path technique generates a trajectory that is a straight line in Cartesian space between two positions. However, because of the complex transform between joint and Cartesian space, this trajectory could be very sub-optimal. For example, a joint might have to turn in one direction, stop, reverse direction, and go back to near its original starting position. Additionally, if the robot must exactly follow a straight line between a series of waypoints, it must also come to a near stop every time it changes direction, which may increase the wear on the robot and reduce the speed at which the robot can execute motions. While techniques exist to increase trajectory smoothness, these techniques generally only operate at or very near waypoints.